1. Field of the Invention
The present invention relates to rotation of images. More specifically, the present invention relates to rotation of images without leveraging an external SRAM chip.
2. Discussion of Background Information
Rotation of images is a relatively common task. In the prior art, the system will calculate the location and retrieve a single source pixel for each destination pixel, and thereby reconstruct the image. The original image is referred to herein as the “source image” and the resulting rotated image is referred to herein as the “destination image.”
Typically, the angle of rotation of the image will not generate a pixel-to-pixel correspondence between the source image and the destination image; more likely, the destination pixel would include portions of several adjacent pixels in the source image. A basic rotation technique is simply to select the source image with the most overlap with the desired location in the destination image, but this tends to produce a degraded destination image. A more robust technique known as “anti-aliasing” identifies several pixels in the source image that are proximate to the desired location, and essentially derives the pixel for the destination image based on the surrounding pixels in the source image. This methodology produces destination images with considerably more accuracy.
A drawback of anti-aliasing is its resource-intensive nature, in that multiple pixels need to be analyzed in order to create one pixel of any image. In both a system with a central processing unit and a system utilizing application specific digital video signal processing hardware, the primary restriction in the process is in retrieving single pixel data from an image frame buffer. The process requires continual fast accesses to non-linear pixel locations within a stored image; therefore, high speed internal random access memory (RAM) is preferred. Unfortunately, these systems have only small amounts of high speed internal random access memory that must be shared by many video processing tasks.
Processing is therefore typically offloaded to an external RAM device, such as a dynamic RAM (DRAM), and more specifically a double data rate SDRAM (DDR SDRAM). The benefits of SDRAM for a video system design include low power consumption, high bandwidth, availability in high densities, and low cost-per-byte.
However, DRAMS are poor options for use in rotation of images. This is because DDR SDRAM gets its highest bandwidth by completing a transfer of many burst accesses to successive columns within the same bank row of its architecture. Conversely, DDR SDRAM gets its worst bandwidth when completing multiple transfers of single-word accesses to different banks, rows, and columns in a truly random fashion. The inefficiencies of having to close a row and then reopen a different bank row and column for each access, having to refresh the DRAM, and using only a single word of the required multiword minimum burst makes a DRAM an impractical solution for image rotation.
Another type of external memory is SRAM. Because of its architecture, SRAM is better designed to support single-word accesses to random locations within its structure. SRAM, in comparison to DDR SDRAM, is higher power, also allows high bandwidth, is available in lower densities, and has a noticeably higher cost-per-byte. Most of the functions within a video processing architecture are best suited to use the SDRAM burst access method. Taking this access method preference into consideration, along with the benefits of SDRAM, results in SDRAM being chosen as the primary external memory. That leaves a designer to add SRAM as a secondary addition to the primary memory choice. In most cases, the added power, cost, weight, space, and interfacing I/O make this a very expensive, both in terms of resources and in pricing, addition to a system with the only purpose of supporting the rotation algorithm. SRAM also has a relatively short lifespan in that design configurations change every 3-5 years, thereby making replacement of SRAM on board problematic.